﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dominio;
using Persistencia;

namespace PersistenciaImplementacion
{
    class BrokerExpendido : Broker
    {
        public override string GetSQLCreate()
        {
            return "INSERT INTO Expendido (cantidadLitros, fechaHora, idManguera, idCliente) VALUES (@cantidadLitros, @fechaHora, @idManguera, @idCliente)SELECT SCOPE_IDENTITY()";
        }

        public override string GetSQLDelete()
        {
            return null;
        }

        public override string GetSQLUpdate()
        {
            return null;
        }

        public override string GetSQLSelect()
        {
            return "SELECT * FROM Expendido";
        }

        public override ObjetoPersistible ReaderToObject(System.Data.Common.DbDataReader reader)
        {
            Expendido exp = new Expendido();
            exp.IdExpendido = Int32.Parse(reader["idExpendido"].ToString());
            exp.CantidadLitros = Int32.Parse(reader["cantidadLitros"].ToString());
            exp.FechaHora = DateTime.Parse(reader["fechaHora"].ToString());
            
            int idCliente = Int32.Parse(reader["idCliente"].ToString());
            exp.AgregarCliente(idCliente);

            int idManguera = Int32.Parse(reader["idManguera"].ToString());
            Manguera m = exp.AgregarManguera(idManguera);
            m.Expendidos.Add(exp);

            return exp;            
        }

        public override void LoadReferences(SqlCommand comando, ObjetoPersistible obj)
        {
            SqlParameter cantidadLitros = new SqlParameter("@cantidadLitros",(obj as Expendido).CantidadLitros);
            SqlParameter fechaHora = new SqlParameter("@fechaHora",(obj as Expendido).FechaHora);
            SqlParameter idManguera = new SqlParameter("@idManguera",(obj as Expendido).Manguera.IdManguera);
            SqlParameter idCliente = new SqlParameter("@idCliente", (obj as Expendido).Cliente.idCliente);
            comando.Parameters.Add(cantidadLitros);
            comando.Parameters.Add(fechaHora);
            comando.Parameters.Add(idManguera);
            comando.Parameters.Add(idCliente);
        }

        public override void LoadReferencesWhere(System.Data.SqlClient.SqlCommand comando, Persistencia.ObjetoPersistible obj)
        {
            
        }

        public override string InsertarHijos(object objeto, ObjetoPersistible obj)
        {
            Expendido exp = (Expendido)obj;
            exp.IdExpendido = Int32.Parse(objeto.ToString());
            return null;
        }
    }
}
